(0) Obligation:

Runtime Complexity TRS:
The TRS R consists of the following rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(X, XS))) → mark(XS)
active(cons(X1, X2)) → cons(active(X1), X2)
active(tail(X)) → tail(active(X))
cons(mark(X1), X2) → mark(cons(X1, X2))
tail(mark(X)) → mark(tail(X))
proper(zeros) → ok(zeros)
proper(cons(X1, X2)) → cons(proper(X1), proper(X2))
proper(0) → ok(0)
proper(tail(X)) → tail(proper(X))
cons(ok(X1), ok(X2)) → ok(cons(X1, X2))
tail(ok(X)) → ok(tail(X))
top(mark(X)) → top(proper(X))
top(ok(X)) → top(active(X))

Rewrite Strategy: INNERMOST

(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)

Converted CpxTRS to CDT

(2) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

ACTIVE(zeros) → c(CONS(0, zeros))
ACTIVE(cons(z0, z1)) → c2(CONS(active(z0), z1), ACTIVE(z0))
ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0))
CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
S tuples:

ACTIVE(zeros) → c(CONS(0, zeros))
ACTIVE(cons(z0, z1)) → c2(CONS(active(z0), z1), ACTIVE(z0))
ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0))
CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

ACTIVE, CONS, TAIL, PROPER, TOP

Compound Symbols:

c, c2, c3, c4, c5, c6, c7, c9, c11, c12, c13

(3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing nodes:

ACTIVE(zeros) → c(CONS(0, zeros))

(4) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

ACTIVE(cons(z0, z1)) → c2(CONS(active(z0), z1), ACTIVE(z0))
ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0))
CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
S tuples:

ACTIVE(cons(z0, z1)) → c2(CONS(active(z0), z1), ACTIVE(z0))
ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0))
CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

ACTIVE, CONS, TAIL, PROPER, TOP

Compound Symbols:

c2, c3, c4, c5, c6, c7, c9, c11, c12, c13

(5) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(cons(z0, z1)) → c2(CONS(active(z0), z1), ACTIVE(z0)) by

ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(x0, x1)) → c2

(6) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0))
CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(x0, x1)) → c2
S tuples:

ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0))
CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(cons(x0, x1)) → c2
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

ACTIVE, CONS, TAIL, PROPER, TOP

Compound Symbols:

c3, c4, c5, c6, c7, c9, c11, c12, c13, c2, c2

(7) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing nodes:

ACTIVE(cons(x0, x1)) → c2

(8) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0))
CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
S tuples:

ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0))
CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

ACTIVE, CONS, TAIL, PROPER, TOP

Compound Symbols:

c3, c4, c5, c6, c7, c9, c11, c12, c13, c2

(9) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(tail(z0)) → c3(TAIL(active(z0)), ACTIVE(z0)) by

ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(x0)) → c3

(10) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(x0)) → c3
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(tail(x0)) → c3
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, PROPER, TOP, ACTIVE

Compound Symbols:

c4, c5, c6, c7, c9, c11, c12, c13, c2, c3, c3

(11) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing nodes:

ACTIVE(tail(x0)) → c3

(12) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, PROPER, TOP, ACTIVE

Compound Symbols:

c4, c5, c6, c7, c9, c11, c12, c13, c2, c3

(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(cons(z0, z1)) → c9(CONS(proper(z0), proper(z1)), PROPER(z0), PROPER(z1)) by

PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(x0, x1)) → c9

(14) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(x0, x1)) → c9
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(cons(x0, x1)) → c9
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, PROPER, TOP, ACTIVE

Compound Symbols:

c4, c5, c6, c7, c11, c12, c13, c2, c3, c9, c9

(15) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing nodes:

PROPER(cons(x0, x1)) → c9

(16) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, PROPER, TOP, ACTIVE

Compound Symbols:

c4, c5, c6, c7, c11, c12, c13, c2, c3, c9

(17) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace PROPER(tail(z0)) → c11(TAIL(proper(z0)), PROPER(z0)) by

PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(x0)) → c11

(18) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(x0)) → c11
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
PROPER(tail(x0)) → c11
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, TOP, ACTIVE, PROPER

Compound Symbols:

c4, c5, c6, c7, c12, c13, c2, c3, c9, c11, c11

(19) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing nodes:

PROPER(tail(x0)) → c11

(20) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, TOP, ACTIVE, PROPER

Compound Symbols:

c4, c5, c6, c7, c12, c13, c2, c3, c9, c11

(21) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace TOP(mark(z0)) → c12(TOP(proper(z0)), PROPER(z0)) by

TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(x0)) → c12

(22) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(x0)) → c12
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(x0)) → c12
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, TOP, ACTIVE, PROPER

Compound Symbols:

c4, c5, c6, c7, c13, c2, c3, c9, c11, c12, c12

(23) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 1 trailing nodes:

TOP(mark(x0)) → c12

(24) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, TOP, ACTIVE, PROPER

Compound Symbols:

c4, c5, c6, c7, c13, c2, c3, c9, c11, c12

(25) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
We considered the (Usable) Rules:

proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
And the Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = [1]   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(PROPER(x1)) = 0   
POL(TAIL(x1)) = 0   
POL(TOP(x1)) = [2]x1   
POL(active(x1)) = x1   
POL(c11(x1, x2)) = x1 + x2   
POL(c12(x1, x2)) = x1 + x2   
POL(c13(x1, x2)) = x1 + x2   
POL(c2(x1, x2)) = x1 + x2   
POL(c3(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c9(x1, x2, x3)) = x1 + x2 + x3   
POL(cons(x1, x2)) = [5]   
POL(mark(x1)) = [5]   
POL(ok(x1)) = x1   
POL(proper(x1)) = [4]x1   
POL(tail(x1)) = [5]   
POL(zeros) = [5]   

(26) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
K tuples:

TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, TOP, ACTIVE, PROPER

Compound Symbols:

c4, c5, c6, c7, c13, c2, c3, c9, c11, c12

(27) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace TOP(ok(z0)) → c13(TOP(active(z0)), ACTIVE(z0)) by

TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(x0)) → c13

(28) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(x0)) → c13
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
TOP(ok(x0)) → c13
K tuples:

TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, ACTIVE, PROPER, TOP

Compound Symbols:

c4, c5, c6, c7, c2, c3, c9, c11, c12, c13, c13

(29) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)

Removed 2 trailing nodes:

TOP(ok(x0)) → c13
TOP(mark(0)) → c12(TOP(ok(0)), PROPER(0))

(30) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
K tuples:none
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, ACTIVE, PROPER, TOP

Compound Symbols:

c4, c5, c6, c7, c2, c3, c9, c11, c12, c13

(31) CdtPolyRedPairProof (UPPER BOUND (ADD(O(n^1))) transformation)

Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.

TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
We considered the (Usable) Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
And the Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
The order we found is given by the following interpretation:
Polynomial interpretation :

POL(0) = 0   
POL(ACTIVE(x1)) = 0   
POL(CONS(x1, x2)) = 0   
POL(PROPER(x1)) = 0   
POL(TAIL(x1)) = 0   
POL(TOP(x1)) = [4]x1   
POL(active(x1)) = x1   
POL(c11(x1, x2)) = x1 + x2   
POL(c12(x1, x2)) = x1 + x2   
POL(c13(x1, x2)) = x1 + x2   
POL(c2(x1, x2)) = x1 + x2   
POL(c3(x1, x2)) = x1 + x2   
POL(c4(x1)) = x1   
POL(c5(x1)) = x1   
POL(c6(x1)) = x1   
POL(c7(x1)) = x1   
POL(c9(x1, x2, x3)) = x1 + x2 + x3   
POL(cons(x1, x2)) = [4]x2   
POL(mark(x1)) = x1   
POL(ok(x1)) = x1   
POL(proper(x1)) = x1   
POL(tail(x1)) = [4] + [4]x1   
POL(zeros) = 0   

(32) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
K tuples:

TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, ACTIVE, PROPER, TOP

Compound Symbols:

c4, c5, c6, c7, c2, c3, c9, c11, c12, c13

(33) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)

Use narrowing to replace ACTIVE(cons(zeros, x1)) → c2(CONS(mark(cons(0, zeros)), x1), ACTIVE(zeros)) by

ACTIVE(cons(zeros, x0)) → c2(CONS(mark(cons(0, zeros)), x0))

(34) Obligation:

Complexity Dependency Tuples Problem
Rules:

active(zeros) → mark(cons(0, zeros))
active(tail(cons(z0, z1))) → mark(z1)
active(cons(z0, z1)) → cons(active(z0), z1)
active(tail(z0)) → tail(active(z0))
cons(mark(z0), z1) → mark(cons(z0, z1))
cons(ok(z0), ok(z1)) → ok(cons(z0, z1))
tail(mark(z0)) → mark(tail(z0))
tail(ok(z0)) → ok(tail(z0))
proper(zeros) → ok(zeros)
proper(cons(z0, z1)) → cons(proper(z0), proper(z1))
proper(0) → ok(0)
proper(tail(z0)) → tail(proper(z0))
top(mark(z0)) → top(proper(z0))
top(ok(z0)) → top(active(z0))
Tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(cons(zeros, x0)) → c2(CONS(mark(cons(0, zeros)), x0))
S tuples:

CONS(mark(z0), z1) → c4(CONS(z0, z1))
CONS(ok(z0), ok(z1)) → c5(CONS(z0, z1))
TAIL(mark(z0)) → c6(TAIL(z0))
TAIL(ok(z0)) → c7(TAIL(z0))
ACTIVE(cons(tail(cons(z0, z1)), x1)) → c2(CONS(mark(z1), x1), ACTIVE(tail(cons(z0, z1))))
ACTIVE(cons(cons(z0, z1), x1)) → c2(CONS(cons(active(z0), z1), x1), ACTIVE(cons(z0, z1)))
ACTIVE(cons(tail(z0), x1)) → c2(CONS(tail(active(z0)), x1), ACTIVE(tail(z0)))
ACTIVE(tail(zeros)) → c3(TAIL(mark(cons(0, zeros))), ACTIVE(zeros))
ACTIVE(tail(tail(cons(z0, z1)))) → c3(TAIL(mark(z1)), ACTIVE(tail(cons(z0, z1))))
ACTIVE(tail(cons(z0, z1))) → c3(TAIL(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
ACTIVE(tail(tail(z0))) → c3(TAIL(tail(active(z0))), ACTIVE(tail(z0)))
PROPER(cons(x0, zeros)) → c9(CONS(proper(x0), ok(zeros)), PROPER(x0), PROPER(zeros))
PROPER(cons(x0, cons(z0, z1))) → c9(CONS(proper(x0), cons(proper(z0), proper(z1))), PROPER(x0), PROPER(cons(z0, z1)))
PROPER(cons(x0, 0)) → c9(CONS(proper(x0), ok(0)), PROPER(x0), PROPER(0))
PROPER(cons(x0, tail(z0))) → c9(CONS(proper(x0), tail(proper(z0))), PROPER(x0), PROPER(tail(z0)))
PROPER(cons(zeros, x1)) → c9(CONS(ok(zeros), proper(x1)), PROPER(zeros), PROPER(x1))
PROPER(cons(cons(z0, z1), x1)) → c9(CONS(cons(proper(z0), proper(z1)), proper(x1)), PROPER(cons(z0, z1)), PROPER(x1))
PROPER(cons(0, x1)) → c9(CONS(ok(0), proper(x1)), PROPER(0), PROPER(x1))
PROPER(cons(tail(z0), x1)) → c9(CONS(tail(proper(z0)), proper(x1)), PROPER(tail(z0)), PROPER(x1))
PROPER(tail(zeros)) → c11(TAIL(ok(zeros)), PROPER(zeros))
PROPER(tail(cons(z0, z1))) → c11(TAIL(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
PROPER(tail(0)) → c11(TAIL(ok(0)), PROPER(0))
PROPER(tail(tail(z0))) → c11(TAIL(tail(proper(z0))), PROPER(tail(z0)))
TOP(mark(zeros)) → c12(TOP(ok(zeros)), PROPER(zeros))
TOP(mark(cons(z0, z1))) → c12(TOP(cons(proper(z0), proper(z1))), PROPER(cons(z0, z1)))
TOP(mark(tail(z0))) → c12(TOP(tail(proper(z0))), PROPER(tail(z0)))
TOP(ok(zeros)) → c13(TOP(mark(cons(0, zeros))), ACTIVE(zeros))
TOP(ok(cons(z0, z1))) → c13(TOP(cons(active(z0), z1)), ACTIVE(cons(z0, z1)))
TOP(ok(tail(z0))) → c13(TOP(tail(active(z0))), ACTIVE(tail(z0)))
ACTIVE(cons(zeros, x0)) → c2(CONS(mark(cons(0, zeros)), x0))
K tuples:

TOP(ok(tail(cons(z0, z1)))) → c13(TOP(mark(z1)), ACTIVE(tail(cons(z0, z1))))
Defined Rule Symbols:

active, cons, tail, proper, top

Defined Pair Symbols:

CONS, TAIL, ACTIVE, PROPER, TOP

Compound Symbols:

c4, c5, c6, c7, c2, c3, c9, c11, c12, c13, c2

(35) CpxTrsMatchBoundsTAProof (EQUIVALENT transformation)

A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 5.

The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by:
final states : [1, 2, 3, 4, 5]
transitions:
zeros0() → 0
mark0(0) → 0
00() → 0
ok0(0) → 0
active0(0) → 1
cons0(0, 0) → 2
tail0(0) → 3
proper0(0) → 4
top0(0) → 5
01() → 7
zeros1() → 8
cons1(7, 8) → 6
mark1(6) → 1
cons1(0, 0) → 9
mark1(9) → 2
tail1(0) → 10
mark1(10) → 3
zeros1() → 11
ok1(11) → 4
01() → 12
ok1(12) → 4
cons1(0, 0) → 13
ok1(13) → 2
tail1(0) → 14
ok1(14) → 3
proper1(0) → 15
top1(15) → 5
active1(0) → 16
top1(16) → 5
mark1(6) → 16
mark1(9) → 9
mark1(9) → 13
mark1(10) → 10
mark1(10) → 14
ok1(11) → 15
ok1(12) → 15
ok1(13) → 9
ok1(13) → 13
ok1(14) → 10
ok1(14) → 14
proper2(6) → 17
top2(17) → 5
active2(11) → 18
top2(18) → 5
active2(12) → 18
02() → 20
zeros2() → 21
cons2(20, 21) → 19
mark2(19) → 18
proper2(7) → 22
proper2(8) → 23
cons2(22, 23) → 17
zeros2() → 24
ok2(24) → 23
02() → 25
ok2(25) → 22
proper3(19) → 26
top3(26) → 5
proper3(20) → 27
proper3(21) → 28
cons3(27, 28) → 26
cons3(25, 24) → 29
ok3(29) → 17
zeros3() → 30
ok3(30) → 28
03() → 31
ok3(31) → 27
active3(29) → 32
top3(32) → 5
cons4(31, 30) → 33
ok4(33) → 26
active4(25) → 34
cons4(34, 24) → 32
active4(33) → 35
top4(35) → 5
active5(31) → 36
cons5(36, 30) → 35

(36) BOUNDS(O(1), O(n^1))